/*
 * SDLEngine.h
 *  Es el motor de la aplicación que se encarga de:
 *  	-	levantar eventos y transformarlos;
 *  	-	dibujar la pantalla
 */

#ifndef SDLENGINE_H_
#define SDLENGINE_H_

#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include "SDL/SDL_ttf.h"
#include "Event.h"
#include "Surface.h"
#include <string>

class SDLEngine {
public:
	SDLEngine();
	SDLEngine(std::string screenTitle, int widthResolution, int heightResolution, int bitsPerPixel);
	virtual ~SDLEngine();

	/* Inicializa el motor de la interfaz grafica. */
	virtual bool start();

	/* Detiene momentaneamente el motor de la interfaz grafica. */
	virtual void stop();

	virtual void setPlayerName(std::string playerName);

	//levanta el evento de la cola de SDL y lo transforma en un Event
	int pullEvent(Event* event);

	/* Limpia la pantalla. */
	virtual void clearScreen();

	/*Dibuja una superficie en la pantalla en las coordenadas (rect.x, rect.y) */

	virtual void drawSurface(Surface* surface, SDL_Rect rect);

	void refreshScreen();

	void updateVideoMode(int w, int h);

	Surface* getMainSurface();

	void changeScreenTitle(std::string screenTitle);

private:

//Evito la copia
	SDLEngine(SDLEngine *);

	Surface* screen;
	std::string screenTitle;
	std::string playerName;
	int widthResolution;
	int heightResolution;
	int bitsPerPixel;

};

#endif /* SDLEngine_H_ */
